package com.gitee.cirnochat.chat.model.enums;

import com.baomidou.mybatisplus.annotation.EnumValue;
import com.fasterxml.jackson.annotation.JsonValue;
import com.gitee.cirnochat.common.model.enums.BaseEnum;
import lombok.Getter;

/**
 * 聊天消息类型枚举
 * @author FlanChan
 * @since 2025-04-18 22:31:33
 */
@Getter
public enum ChatMessageType implements BaseEnum<Integer> {
    /** 文本消息 */
    TEXT(0),
    /** 图片消息 */
    IMAGE(1),
    /** 视频消息 */
    VIDEO(2),
    /** 音频消息 */
    AUDIO(3),
    /** 语音消息 */
    VOICE(4),
    /** 文件消息 */
    FILE(5),
    /** 语音通话消息 */
    REAL_VIDEO(6),
    /** 视频通话消息 */
    REAL_AUDIO(7),
    /** 用户信息/名片消息(可用于被添加好友) */
    USER(8),
    /** 表情包消息 */
    EMOJI(9);

    @EnumValue // 用于 MyBatis-Plus 映射数据库值
    @JsonValue // 用于 JSON 序列化
    private final Integer value;

    ChatMessageType(Integer value) {
        this.value = value;
    }

    public static ChatMessageType fromValue(Integer value) {
        for (ChatMessageType type : ChatMessageType.values()) {
            if (type.getValue().equals(value)) {
                return type;
            }
        }
        return null;
    }
}